//
//  CZSQLiteManager.m
//  XinLang_OC
//
//  Created by WONG on 16/4/3.
//  Copyright © 2016年 cheuhui. All rights reserved.
//

#import "CZSQLiteManager.h"
#import "FMDB.h"

/*
     FMDB核心对象:
     1.FMDatabase: 一个FMDatabase对象,对应一个数据库.操作数据库,都是通过这个对象
         1.executeUpdate: 在FMDB中,除了查询的sql,其他都称为update(INSERT INTO, UPDATE, DELE, CREATE,)
         2.executeQuery: 执行查询sql
         3.executeStatements: 可以执行多条sql语句
     2.FMDatabaseQueue: 内部有一个FMDatabase,还有一个队列,通过FMDatabaseQueue可以异步执行sql语句,提供事务。建议使用FMDatabaseQueue
         1.inDatabase: 不带事务的方式来执行sql
         2.inTransaction: 使用事务执行sql
     
     3.FMResultSet:
         next: 执行下一步,返回true就表示有一条记录,false表示没有记录了
         columnCount: 字段数
         columnIndexForName: 通过名称来获取是第几列
         columnNameForIndex: 通过列号来获取字段名称
         intForColumn:(NSString*)columnName:   通过字段名称获取int类型的值
         intForColumnIndex:(int)columnIdx: 通过列数来获取int类型的
 */

@interface CZSQLiteManager ()




@end

@implementation CZSQLiteManager

+ (instancetype)sharedManager {
    static id instance = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

- (instancetype)init {
    if (self = [super init]) {
        NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
        NSString *dbPath = [documentPath stringByAppendingPathComponent:@"statusBB.db"];
        NSLog(@"bdPath = %@",dbPath);
        
        // 创建FMDatabaseQueue对象,如果不存在数据库,会自动创建数据库,打开数据库
        // path 数据库的路径
        self.dbQueue = [FMDatabaseQueue databaseQueueWithPath:dbPath];
        
        // 创建数据表
        [self createTable:@"T_Status"];
    }
    
    return self;
}

/**
 *  创建数据表
 *  string: 表名称
 */
- (void)createTable:(NSString *)string {
    // 从文件加载sql语句
    NSString *tablePath = [[NSBundle mainBundle] pathForResource:@"tables" ofType:@"sql"];
    
    NSData *data = [NSData dataWithContentsOfFile:tablePath];
    
    // 转成string类型
    NSString *sqls = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
    
    // 执行sql语句创建表
    [self.dbQueue inDatabase:^(FMDatabase *db) {
        // 执行一条更新的sql
//        if ([db executeUpdate:sqls]) {
//            NSLog(@"创建数据表成功");
//        }
        // 执行多条sql
        if ([db executeStatements:sqls]) {
            NSLog(@"执行多条sql成功");
        }
    }];
}



@end




















